/**
 * @description API服务封装
 */
import http from './request';
import api from '../config/api';

/**
 * 用户服务
 */
export const userService = {
  /**
   * 用户登录
   * @param {Object} data 登录参数
   * @return {Promise} 登录结果
   */
  login(data) {
    return http.post(api.user.login, data);
  },
  
  /**
   * 用户注册
   * @param {Object} data 注册参数
   * @return {Promise} 注册结果
   */
  register(data) {
    return http.post(api.user.register, data);
  },
  
  /**
   * 获取用户信息
   * @return {Promise} 用户信息
   */
  getUserInfo() {
    return http.get(api.user.info);
  },
  
  /**
   * 更新用户信息
   * @param {Object} data 用户信息
   * @return {Promise} 更新结果
   */
  updateUserInfo(data) {
    return http.put(api.user.update, data);
  },
  
  /**
   * 用户退出登录
   * @return {Promise} 退出结果
   */
  logout() {
    return http.post(api.user.logout);
  }
};

/**
 * 商品服务
 */
export const goodsService = {
  /**
   * 获取商品列表
   * @param {Object} params 查询参数
   * @return {Promise} 商品列表
   */
  getGoodsList(params) {
    return http.get(api.goods.list, params);
  },
  
  /**
   * 获取商品详情
   * @param {String|Number} id 商品ID
   * @return {Promise} 商品详情
   */
  getGoodsDetail(id) {
    return http.get(api.goods.detail, { id });
  },
  
  /**
   * 获取商品分类
   * @return {Promise} 商品分类
   */
  getGoodsCategory() {
    return http.get(api.goods.category);
  }
};

/**
 * 订单服务
 */
export const orderService = {
  /**
   * 创建订单
   * @param {Object} data 订单数据
   * @return {Promise} 创建结果
   */
  createOrder(data) {
    return http.post(api.order.create, data);
  },
  
  /**
   * 获取订单列表
   * @param {Object} params 查询参数
   * @return {Promise} 订单列表
   */
  getOrderList(params) {
    return http.get(api.order.list, params);
  },
  
  /**
   * 获取订单详情
   * @param {String|Number} id 订单ID
   * @return {Promise} 订单详情
   */
  getOrderDetail(id) {
    return http.get(api.order.detail, { id });
  },
  
  /**
   * 取消订单
   * @param {String|Number} id 订单ID
   * @return {Promise} 取消结果
   */
  cancelOrder(id) {
    return http.post(api.order.cancel, { id });
  },
  
  /**
   * 支付订单
   * @param {String|Number} id 订单ID
   * @param {Object} payData 支付数据
   * @return {Promise} 支付结果
   */
  payOrder(id, payData = {}) {
    return http.post(api.order.pay, { id, ...payData });
  }
};

/**
 * 上传服务
 */
export const uploadService = {
  /**
   * 上传图片
   * @param {String} filePath 文件路径
   * @param {Object} options 上传选项
   * @return {Promise} 上传结果
   */
  uploadImage(filePath, options = {}) {
    return http.upload(api.upload.image, {
      filePath,
      name: 'file',
      ...options
    });
  }
};

// 默认导出所有服务
export default {
  user: userService,
  goods: goodsService,
  order: orderService,
  upload: uploadService
}; 